package com.motong.gongdan.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.motong.gongdan.entity.StockMsg;
import com.motong.gongdan.vo.H5Resp.H5StockDetailResp;
import com.motong.gongdan.vo.H5Resp.H5StockInputResp;
import com.motong.gongdan.vo.H5Vo.stock.query.StockListQuery;
import com.motong.gongdan.vo.H5Vo.stock.vo.StockDetailVo;
import com.motong.gongdan.vo.H5Vo.stock.vo.StockListVo;
import com.motong.gongdan.vo.resp.StockDetailResp;
import com.motong.gongdan.vo.resp.StockInputResp;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author:fff
 * @time:2022/3/8
 */
public interface StockMsgMapper extends BaseMapper<StockMsg> {
    IPage<StockInputResp> getList(Page page, @Param(Constants.WRAPPER) Wrapper<StockInputResp> wrapper);

    List<StockInputResp> getStockList(@Param(Constants.WRAPPER) Wrapper<StockInputResp> wrapper);

    List<H5StockInputResp> getH5StockList(@Param(Constants.WRAPPER) Wrapper<H5StockInputResp> wrapper, @Param("sortProp") String sortProp, @Param("sortOrd") String sortOrd);


    IPage<StockDetailResp> getStockDetail(Page page, @Param(Constants.WRAPPER) Wrapper<StockDetailResp> wrapper);


    List<H5StockDetailResp> getDetails(@Param("productId") Integer productId);

    /**
     * 获取打印数据
     *
     * @param stockMsgId 库存id
     */
    Map<String, Object> getExportData(@Param("stockMsgId") Integer stockMsgId);

    /**
     * 根据库存id商品详情
     *
     * @param stockMsgId 库存id
     */
    List<Map<String, Object>> getExportProductList(@Param("stockMsgId") Integer stockMsgId);

    /**
     * 获取库存详细信息
     *
     * @param queryWrapper 条件判断
     */
    IPage<StockInputResp> getH5StockMsg(Page<StockMsg> page, @Param(Constants.WRAPPER) Wrapper<StockInputResp> queryWrapper);

    /**
     * h5端获取库存列表
     *
     * @param query 查询条件
     */
    IPage<StockListVo> h5StockList(Page<StockListVo> page, @Param("query") StockListQuery query);

    /**
     * h5端获取库存列表
     *
     * @param stockId 出入库id
     */
    StockDetailVo h5GetById(@Param("stockId") Integer stockId);

    /**
     * h5端获取库存列表详情
     *
     * @param stockId 出入库id
     */
    List<StockDetailResp> getH5StockDetailBySMId(Integer stockId);

}
